home *** CD-ROM | disk | FTP | other *** search
- #import <appkit/View.h>
- #import <dpsclient/event.h>
-
- // Constants
- #define PLANETS 30 // default number of planets
- #define MAXPLANETS 42 // maximum number of planets
- #define MAXITERATIONS 30000
- #define SPACEDIST 2 // # of pixels = 1 unit of space distance
- #define DEFAULTGRAV 1 /* Default gravity for new planet*/
- #define MAXGRAVITY (MAXPLANETS * DEFAULTGRAV)
- #define PI 3.14159
-
- /* Macros */
- #define deltaX(a,b) ((myplanets[b].x - myplanets[a].x)/SPACEDIST) /* addressing into dynamic array */
- #define deltaY(a,b) ((myplanets[b].y - myplanets[a].y)/SPACEDIST) /* addressing into dynamic array */
- #define SQR(v) (v*v) /* fast square */
-
- typedef struct
- {
- NXCoord x, y; /* planet positions x[planet] NXcoord is a float*/
- float gravity; /* planet gravity gravity[planet] */
- float xv, yv; /* planet velocities xv[planet] */
- } aplanet;
-
-
- @interface PlanetView : View
- {
- int numplanets;
- int initialNumplanets;
- aplanet *myplanets;
- id numplanetTextField;
- id numplanetSlider;
- id inspectorPanel;
- int iterationCount;
- float gfactor;
- }
-
- - createUniverse;
- - constrainGravity:(int)i;
- - setNumberPlanets:sender;
- - merge: (int) i: (int) j;
- - setGFactor:sender;
- - oneStep;
- - constrainPosition:(int)i;
- - newPlanet: (aplanet *) newplanet: (float) width: (float) height;
- - blowPlanet: (int) planetNum;
- @end
-
-